// pages/switch/switch.ts
import { apiClient, apiRoutes } from "../../utils/api";
const app = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    is_supermanager: null,
    status_list: [],
    isLocked: true, // 全局锁定状态
  },
  /**
   * 请求status_list并更新页面数据
   */
  fetchStatusList() {
    apiClient.get(apiRoutes.switches).then(res => {
      console.log("switches", res.data)
      this.setData({ status_list: res.data });
    });
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {
    const is_supermanager = wx.getStorageSync('role')=="超级管理员" ? true : false
    this.setData({is_supermanager})
    // 立即请求一次status_list
    this.fetchStatusList();
    // 获取isLocked
    apiClient.get(apiRoutes.users + wx.getStorageSync("userid") + "/").then(res => {
      console.log(res.data)
      if (!res.data.is_auto_on) {
        this.setData({ isLocked: false })
      }
    })
    // 设置定时器，每3秒请求一次
    this.interval = setInterval(() => { // 使用箭头函数确保this指向页面实例
      this.fetchStatusList();
    }, 10000);
  },



  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
    // 清除定时器
    clearInterval(this.interval);
  },

  /**
   * 页面被隐藏时清除定时器
   */
  onHide() {
    // 清除定时器
    clearInterval(this.interval);
  },

  lockSwitchChange(e) {
    apiClient.patch(apiRoutes.users + wx.getStorageSync("userid") + "/", { is_auto_on: e.detail.value }).then(res => {
      console.log(res.data.is_auto_on)
      const isLocked = res.data.is_auto_on;
      this.setData({ isLocked });
    })
  },

  switchChange(e) {
    const id = e.currentTarget.dataset.id;
    const checked = e.detail.value;
    apiClient.patch(apiRoutes.switches + id + '/', { is_on: checked }).then(res => {
      if (res.data.is_on == checked) {
        this.setData({
          status_list: this.data.status_list.map(item => {
            if (item.id === id) {
              return { ...item, is_on: checked };
            }
            return item;
          })
        });
      }
    });
  },
});